use anyhow::Result;

#[macro_export]
macro_rules! my_vec {
    //  如果是空直接返回一个空集合
    () => {
        Vec::new()
    };
    ($elem:expr;$n:expr) => {{
        std::vec::from_elem($elem, $n)
    }};

    ($($x:expr),+ $(,)?) => {{
        <[_]>::into_vec(Box::new ([$($x),*]))
    }};
}

fn main() -> Result<()> {
    // let v = my_vec![1, 2, 3];
    let v: Vec<i32> = my_vec!();
    println!("{:?}", v);
    let v = my_vec![1;4];
    println!("{:?}", v);
    let v1: Vec<i32> = my_vec!("1".parse()?, "2".parse()?, "3".parse()?, "4".parse()?);
    println!("{:?}", v1);

    Ok(())
}
